Digital video technology is used in a growing number of applications such as cable television, direct broadcast satellite services, high-definition television, and the like. Digital representations of video signals often require a very large number of bits. As such, a number of systems and methods are currently being developed to accommodate transmission and storage of still images and video sequences using various types of compression technology implemented in both hardware and software.
The availability of economically feasible and increasingly more powerful microprocessors allows integration of natural and synthetic audio and video sequences. Information in the form of audio and video sequences may be integrated to present real-time and non-real-time information in a single sequence. To provide audio and video sequences having acceptable quality, using diverse communication channels having various bandwidths and associated communication rates, requires continuous improvement to obtain higher compression ratios and reduction of the delays or latencies due to encoding, transmission, decoding, and compositing.
In general, quality, in the form of resolution, is compromised to obtain an accessible latency for a particular limited bandwidth system. However, it is desirable to provide a method for reducing latency which does not result in such a quality reduction as perceived by the viewer.
An audio/visual (AV) object may be used to represent a physical (real) or virtual article. AV objects may be defined in terms of other AV objects which are referred to as sub-objects. An AV object which is not a composite or a compound AV object is referred to as a primitive. A sprite object is an AV object created within a block of pixels that can be manipulated as a unit using geometrical transformations. Rather than re-transmitting and re-displaying the sprite object, new transformation parameters are provided to generate subsequent video frames. This results in a significant reduction in the amount of data necessary to represent such frames.
Sprite objects have a number of applications in computer graphics, animation, and digital video. A small sprite object may represent a character in a video game whereas a large sprite object may represent an image which is larger than an individual frame. For example, a still image of a video layer of a scene, such as the background of a room, may be represented by a large sprite object. A particular video sequence which represents a camera panning across the room would have a number of frames to depict motion of the camera. Rather than transmitting a still image for each frame, only the transformation parameters are required to manipulate a portion of the sprite image which is reused multiple times as the video frames are generated.
A prior art method of displaying a digital video sequence using sprites requires the sprites to be encoded and transmitted at the beginning of the video sequence. Transformation parameters are then transmitted and applied to generate the various frames for the sequence. This results in a significant delay or high latency before beginning display of the video sequence because the sprite objects must be available to a decoder before any frames can be reconstructed and displayed using the transformation parameters. In addition, the spite object (basis object) is traditionally fixed after it has been transmitted and stored at the beginning of the encoded video sequence.